// 通过文件url获取文件流blob
const getFiltStream = (url: string) => {
  return new Promise((resolve, reject) => {
    const xhr = new XMLHttpRequest()
    xhr.open('GET', url, true)
    xhr.responseType = 'blob'
    xhr.onload = function () {
      if (this.status === 200) {
        resolve(this.response)
      } else {
        reject(new Error('Failed to fetch file'))
      }
    }
    xhr.onerror = function () {
      reject(new Error('Network error'))
    }
    xhr.send()
  })
}

// 通过文件流进行下载
const downloadExcel = function (data:Blob, name:string) {
  const fileName = name
  const blob = new Blob([data])
  if ('msSaveOrOpenBlob' in navigator) {
    window.navigator.msSaveOrOpenBlob(blob, fileName)
    return
  }
  const linkNode = document.createElement('a')

  linkNode.download = fileName // a标签的download属性规定下载文件的名称
  linkNode.style.display = 'none'
  linkNode.href = URL.createObjectURL(blob) // 生成一个Blob URL
  document.body.appendChild(linkNode)
  linkNode.click() // 模拟在按钮上的一次鼠标单击

  URL.revokeObjectURL(linkNode.href) // 释放URL 对象
  document.body.removeChild(linkNode)
}
//前端请求流文件但是后端返回excel是json需要判断
export const isJson=(res)=>{
  const reader = new FileReader()
  reader.readAsText(res)
  const that = this
  reader.onload = function (result) {
    // console.log(result.target.result, 'result.target.result')
    try {
      const resData = JSON.parse(result.target.result) // 解析对象成功，说明是json数据
      // json
      if (resData.code) {
        return resData
      }else{
        //文件流
        return false
      }
    } catch (err) { // 解析成对象失败，说明是正常的文件流
      console.log(err)
      that.$message.error(err)
    }
  }
}

//后端返回xml服务器地址 前端处理成html
export const loadXml=(PATH:string)=>{
  console.log(PATH,'path')
  // let xmlHttp;
  // if(window.XMLHttpRequest){
  //   xmlHttp=new XMLHttpRequest()
  // }else{
  //   xmlHttp=new ActiveXObject('Microsoft.XMLHTTP')
  // }
  // xmlHttp.open('GET',PATH,false)
  // xmlHttp.send()
  // console.log(xmlHttp.responseXML,'xmlHttp.responseXML')
  // return xmlHttp.responseXML
  return fetch(PATH)
    .then(response => response.text())
    .then(xml => {
      const parser = new DOMParser();
      const xmlHtml = parser.parseFromString(xml, 'text/xml');
      const result:string[]=[]
      // 转换并插入到页面
      xmlView(xmlHtml,result)
      //返回最终要展示的内容 去除空格
      return result.filter(i=>i&&i.trim()).toString()
    })
    .catch(error => console.error('Error fetching XML:', error));
}
//解析html格式的xml
export function xmlView(xmlDoc:HTMLElement,result:string[]){
  // 遍历文档中的所有元素
  Array.from(xmlDoc.documentElement.childNodes).forEach(function(node) {
    // 跳过文本节点，只处理元素节点
    if (node.nodeType === Node.ELEMENT_NODE) {
      console.log('找到标签:', node.tagName);
      // 打印当前元素的文本内容
      printElementText(node);
    }
  });
  function printElementText(element:HTMLElement) {
    // 如果元素有文本节点，则打印其文本内容
    if (element.nodeType === Text.TEXT_NODE) {
      //获取最终的文本展示内容
      result.push(element.textContent)
      console.log(result,'result')
    } else {
      // 如果元素有子节点，递归打印每个子节点的文本内容
      Array.from(element.childNodes).forEach(printElementText);
    }
  }
}
